package com.zy.cat.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.zy.cat.entity.dev.CatDevUserTaskRecord;
import com.zy.cat.entity.app.resp.CatUserFeedbackHistoryResp;
import com.zy.cat.entity.dev.CatDevRegisterIncomeHistory;
import com.zy.cat.entity.dev.CatDevSignedBeansHistory;
import com.zy.cat.entity.dev.CatDevUserInfo;
import com.zy.cat.entity.dev.CatDevWeInfo;
import com.zy.cat.entity.dev.resp.CatDevBeanVideoHistoryResp;
import com.zy.cat.entity.dev.resp.CatDevRemitInfoResp;
import com.zy.cat.entity.dev.resp.CatDevRemitRecordResp;
import com.zy.cat.entity.dev.resp.CatDevSignedHistoryResp;
import com.zy.cat.entity.dev.resp.CatDevUserInfoResp;
import com.zy.cat.entity.dev.resp.CatDevWelfareInfoResp;
import com.zy.cat.entity.dev.resp.CatDevWelfareInfoResp.UserTaskData;
import com.zy.cat.entity.mall.resp.CatCashBonusHistoryResp;
import com.zy.cat.entity.resp.Pages;
import com.zy.cat.entity.resp.ResultPage;
/**
 * 
 * @info 
 * @author Link
 * @date 2019-11-28 18:48
 */
public interface CatDevService {

	/**
	 * 
	 * @info 9趣猫用户登录,
	 * @author Link
	 * @param userid 
	 * @date 2019-11-14 18:00
	 * @param pid 邀请人的pid(imei,imsi有一个于注册数据库的手机信息一致，邀请失效，不享受奖励)
	 * @param sex
	 * @param nikename
	 * @param unionid
	 * @param icon
	 * @param vscode
	 * @param cid 
	 * @param imei 
	 * @param imsi 
	 * @return
	 */
	CatDevUserInfoResp login(String userid, int rtype, CatDevWeInfo weInfo, String vscode, String brand, String model, String cid,
			String imei, String imsi,Integer pindex);
	/**
	 * 
	 * @info 9趣猫用户登录信息获取
	 * @author Link
	 * @date 2019-11-12 10:59
	 * @param pid
	 * @param utoken
	 * @return
	 */
	CatDevUserInfoResp info(int rtype,CatDevUserInfo zdev ,Integer pindex,String vscode, String cid);

	/**
	 * 
	 * @info 获取淘宝授权H5URL
	 * @author Link
	 * @date 2019-11-14 09:01
	 * @param ctype
	 * @param rtype 
	 * @param pid
	 * @return
	 */
	String getTbOAuth2Url(Integer ctype,int rtype, CatDevUserInfo zdev, String pid);

	/**
	 * 
	 * @info 修改用户性别（清除用户数据缓存）
	 * @author lipengchao
	 * @apiNote	已完成  测试完成
	 * @date 2019-11-14 16:42
	 * @param zdev 清除缓存用到的所有个人信息参数
	 * @param rtype
	 * @param pid
	 * @param sex
	 * @return
	 */
	Boolean updSex(CatDevUserInfo zdev, Integer rtype, String pid, Integer sex);

	
 
	/**
	 * 
	 * @info 9趣猫用户提现记录，查询数据库：zy_cat_remit_list
	 * @author lipengchao
	 * @apiNote	已完成  测试完成
	 * @date 2019-11-15 11:13
	 * @param pid
	 * @param pages
	 * @return
	 */
	ResultPage<CatDevRemitRecordResp> remitList(String pid, Pages pages,Integer mode);

	/**
	 * 
	 * @info 9趣猫用户申请提现
	 * @author lipengchao
	 * @apiNote	已完成
	 * @date 2019-11-15 11:35
	 * @param rtype
	 * @param pid 用户ID
	 * @param qtype 取款类型（0.微信、1.支付宝）
	 * @param mode 提现方式(0.正常提现、1.普通邀请新用户红包、2.互拆红包、3.新用户1元、4.订单返利提现、5.5088邀请奖励提现)
 	 * @param zaccount  提款支付宝账号
	 * @param zrealname 提款支付宝真实姓名
	 * @param tmoney 提款金额（分）
	 * @return
	 */
	CatDevRemitRecordResp remit(int rtype,Integer appId, String pid, int qtype,int mode, String zaccount, String zrealname, long tmoney);

	/**
	 * 
	 * @info 现金豆兑换RMB
	 * @author lipengchao
	 * @apiNote	已完成
	 * @date 2019-11-15 11:56
	 * @param rtype
	 * @param pid
	 * @param beans
	 * @return
	 */
	boolean beansConvert(int rtype, String pid, long beans);

	/**
	 * 
	 * @info 绑定手机号码
	 * @author lipengchao
	 * @apiNote	已完成
	 * @date 2019-11-21 17:49
	 * @param rtype
	 * @param pid
	 * @param phone
	 * @return
	 */
	UserTaskData updPhone(int rtype,CatDevUserInfo zdev, String pid, String phone);

	/**
	 * 
	 * @info 9趣猫用户修改用户名和头像
	 * @author lipengchao
	 * @apiNote	已完成
	 * @date 2019-11-21 19:47
	 * @param rtype
	 * @param pid
	 * @param icon
	 * @param nikename
	 * @return
	 */
	Boolean updInfo(int rtype, CatDevUserInfo zdev,String pid, String icon, String nikename);

	/**
	 * 
	 * @info 获取用户签到信息
	 * @author lipengchao
	 * @apiNote	已完成
	 * @date 2019-11-22 13:49
	 * @param rtype
	 * @param pid
	 * @param version 版本号
	 * @return
	 */
	CatDevSignedHistoryResp getSignedInfo(Integer rtype, String pid,String version);

	/**
	 * 
	 * @info 获取现金红包信息
	 * @author Link
	 * @apiNote	已完成
	 * @date 2019-11-25 14:26
	 * @param rtype
	 * @param pid
	 * @param pages
	 * @return
	 */
	CatCashBonusHistoryResp getCashBonusInfo(int rtype, String pid, Pages pages);

	/**
	 * 修改支付宝绑定信息
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-11-25 03:20:43
	 * @param rtype 应用平台
	 * @param pid 用户id
	 * @param account 支付宝账号
	 * @param realname 支付宝账户真实姓名
	 * @return
	 */
	Boolean updAlipay(Integer rtype,CatDevUserInfo zdev, String pid, String account, String realname);

	/**
	 * 
	 * @info 用户领取注册奖励
	 * @author Link
	 * @date 2019-11-27 14:12
	 * @param rtype
	 * @param pid
	 * @param zdev
	 * @return
	 */
	boolean getRegisterIncome(int rtype, String pid, CatDevRegisterIncomeHistory zdev);
	
	/**
	 * 用户实名认证
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-03 03:46:16
	 * @param rtype
	 * @param zdev
	 * @param pid
	 * @param purl
	 * @param burl
	 * @return
	 */
	boolean authentication(Integer rtype,CatDevUserInfo zdev, String realname, String idcard,String purl, String burl);
	
	/**
	 * 获取看视频领金豆信息
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-09 09:47:57
	 * @param rtype
	 * @param pid
	 * @param ltype 来源类型(0.福利中心、1.首页弹窗、2.刮刮卡弹窗)
	 * @return
	 */
	CatDevBeanVideoHistoryResp getBeansByVideo(Integer rtype, String pid, int ltype);
	
	/**
	 * 获取福利中心信息
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-12 09:34:00
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CatDevWelfareInfoResp getWelfareInfo(Integer rtype, String pid);
	
	/**
	 * 获取提现信息
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-12 01:45:26
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CatDevRemitInfoResp getRemitInfo(Integer rtype, String pid);
	
	/**
	 * 获取是否已关注微信公众号
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param rtype
	 * @param pid
	 * @param unionid
	 * @return
	 */
	Integer getIsFocusWeChat(Integer rtype, String pid, String unionid);
	
	/**
	 * 获取微信公众号提现记录
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param code 微信code
	 * @param pages 分页
	 * @param mode 提现方式
	 * @return
	 */
	ResultPage<CatDevRemitRecordResp> remitWeChatList(String code, Pages pages, Integer mode);
		
	/**
	 * 签到现金豆翻倍
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param beansHistory
	 * @return
	 */
	Map<String, Object> getSignedInfoDouble(CatDevSignedBeansHistory beansHistory);
	
	/**
	 * 账户注销
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param pid
	 * @return
	 */
	boolean accountLogout(String pid,CatDevUserInfo zdev);
	
	/**
	 * 账号密码登录
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param rtype
	 * @param account
	 * @return
	 */
	CatDevUserInfoResp accountLogin(Integer rtype, String account, HttpServletRequest request);
	
	/**
	 * 获取用户信息
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param pid
	 * @return
	 */
	CatDevUserInfo getCatDevUserInfoByPid(String pid);
	/**
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param phone
	 * @return
	 */
	CatDevUserInfo getCatDevUserInfoByPhone(String phone);
	/**
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param unionid
	 * @return
	 */
	CatDevUserInfo getCatDevUserInfoByUnionid(String unionid);
	
	/**
	 * 进行每日签到
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param pid
	 * @return
	 */
	CatDevSignedHistoryResp setSignedDaily(String pid);
	
	/**
	 * 
	 * @info 苹果账号登录验证
	 * @author Link
	 * @param pid 
	 * @date 2020-04-14 18:33
	 * @param rtype
	 * @param utype
	 * @param brand
	 * @param model
	 * @param vscode
	 * @param cid
	 * @param imei
	 * @param imsi
	 * @param userid
	 * @param identityToken
	 * @param authorizationCode
	 * @return
	 */
	Object iosLoginValidate(String pid, Integer rtype, Integer utype, String brand, String model, String vscode, String cid, String imei, String imsi,
			String userid,String identityToken,String authorizationCode, Integer pindex);
	
	/**
	 * 
	 * @info 根据苹果账号查询用户信息
	 * @author Link
	 * @date 2020-04-15 09:14
	 * @param userid
	 * @return
	 */
	CatDevUserInfo getCatDevUserInfoByUserid(String userid);
	
	/**
	 * 领取任务奖励
	 * @author lipengchao
	 * @date 2020-05-08 11:38:46 
	 * @param rtype
	 * @param taskType
	 * @param pid
	 * @return
	 */
	UserTaskData getTaskReward(Integer rtype,CatDevUserTaskRecord taskRecord);
	
	/**
	 * 现金豆提现
	 * @author lipengchao
	 * @date 2020-06-01 05:09:37 
	 * @param rtype 系统类型, 0.android、1.iOS 
	 * @param pid 
	 * @param tmoney 提现金额
	 * @param convertBean 需自动转换现金豆数量
	 * @param mode 提现方式,0.正常提现、3.新用户体验提现
	 * @return
	 */
	CatDevRemitRecordResp beanRemit(Integer rtype,Integer appId, String pid, long tmoney, long convertBean, int mode);
	
	/**
	 * 判断是否有新用户体验提现机会
	 * @author lipengchao
	 * @date 2020-06-10 02:05:40 
	 * @param pid
	 * @return
	 */
	boolean isAbleNewUserRemit(String pid);
	
	/**
	 * 提交用户反馈
	 * @author lipengchao
	 * @date 2020-08-04 06:04:50 
	 * @param rtype
	 * @param appId
	 * @param brand
	 * @param model
	 * @param vscode
	 * @param type
	 * @param questionDesc
	 * @param questionPic
	 * @return 
	 */
	String commitFeedback(Integer rtype, Integer appId, String brand, String model, String vscode, Integer type,
			String questionDesc, String questionPic, String userID);
	
	/**
	 * 查询用户反馈记录
	 * @author lipengchao
	 * @date 2020-08-05 11:06:51 
	 * @param rtype
	 * @param appId
	 * @param userid_1
	 * @return
	 */
	List<CatUserFeedbackHistoryResp> getFeedbackHistory(Integer rtype, Integer appId, String userid);
	
	/**
	 *   保存用户的deviceToken值
	 * @param rtype
	 * @param pid
	 * @param devicetoken
	 * @param deviceid
	 * @return
	 */
	
	String saveDeviceToken(Integer rtype, String pid, String devicetoken, String deviceid);
	/**
	 * 获取用户财务状态
	 * @param pid
	 * @return
	 */
	int getCatDevUserFstatus(String pid);
}
